package gitee.derumin.lib_for_derumin.helpers.config.configserializers;

import com.google.gson.JsonElement;

public interface ConfigFieldSerializer<T> {
    /**
     * 将传入的JsonElement反序列化。
     * @param element 将被反序列化的JsonElement，一般为JsonPrimitive。
     * @param name 用于构建异常信息。
     * @return 返回反序列化的对象。
     * @throws Exception 若反序列化失败则抛出。应当包含异常信息。
     */
    T jsonToObject(JsonElement element, String name) throws Exception;

    /**
     * 将传入的对象进行序列化。若序列化失败应当抛出异常。
     * @param contains 将被进行序列化的对象。
     * @return 返回一个JsonElement对象，一般为JsonPrimitive。
     * @throws Exception 若序列化失败则抛出。应当包含异常信息。
     */
    JsonElement objectToJson(Object contains) throws Exception;
}
